package com.zjj.learn.javaplus.pkg03.demo302;

public class TestDemo302_2 {

    public static void main(String[] args) {

        OutterClass2.Inner2 inner2 = new OutterClass2().new Inner2();
        inner2.show();
    }


    /**
     * 内部类：实例内部类（成员内部类）(了解语法为主)
     * 什么事实例内部类？
     *     没有 static 关键字修饰，属于外部类的每一个实例对象的，跟着对象一起加载。
     *     见：{@link com.zjj.learn.javaplus.pkg03.demo302.OutterClass2.Inner2}
     * 实例内部类成分特点？
     *     实例内部类不能够定义静态的成员变量或者方法，其他的都可以。
     *     可以定义常量
     *
     * 成员内部类访问格式： 外部内名称.内部类名称
     * 实例内部类创建对象格式：
     *     外部类名称.内部类名称 对象名称 = new 外部类构造器.new 内部构造器;
     *     例如：OutterClass2.Inner2 inner2 = new OutterClass2().new Inner2();
     *
     *
     * 拓展：
     *     1、实例内部类中是否可以直接访问外部类的静态成员？
     *         可以的，外部类的静态成员可以被共享访问！
     *     2、实例内部类中是否可以访问外部类的实例成员？
     *          可以的，实例内部类属于外部类对象，可以直接访问当前外部类对象的实例成员！
     *
     *
     * 小结：
     *     1、实例内部类属于外部类的对象，需要和外部类对象一起加载。
     *     2、实例内部类可以访问外部类的所有成员【静态或者非静态都可以】。
     *
     **/


    /**
     * 局部内部类 （几乎不用）
     *      定义在方法中，在构造器中，代码块中，for循环中定义的内部类
     *      就是局部内部类。
     *
     * 局部内部类中的成分特点：
     *    只能定义实例成员，不能定义静态成员
     *    可以定义常量的。
     * 小结：局部内部类几乎没用，不用管
     **/
}
